<?php
/**
 * @date        <!-- phpDesigner :: Timestamp [08-07-2010 14:03:52] -->
 * @filesource  class.module.php
 * @package     WebCms
 * @copyright	Copyright (C) 2010
 * @author      Sérgio 'Horizak' Alves
 */

// Sem acesso directo
defined('_WEXEC') or die('Restricted access');

/**
 * Class principal dos modulos
 *
 */
class Module {
  var $name;
  var $version;
  var $needLogin;
  var $position;
  var $params = array();
  var $patch;
  var $url;
  var $tplP;
  var $tplU;

  /**
   * Função construtora
   * 
   */
  function __construct() {
    $array = $this->getData();
    $this->version = $array['version'];
    $this->needLogin = $array['needlogin'];
    $this->position = $array['position'];
    $this->params = $this->getParams($array['params']);
    $this->url = MOD_U.strtolower($this->name).'/';
    $this->tplP = TPLMODULE_P.strtolower($this->name).DS;
    $this->tplU = TPLMODULE_U.strtolower($this->name).'/';
  }

  /**
   * Pega os campos da BD sobre o modulo
   * 
   * @var           array $params - parâmetros opcionais
   */
  function getData($params = array()) {
    global $cms;

    $sql = "SELECT * FROM ".DBMODULES;
    $sql .= " WHERE name ='{$this->name}'";

    if ($cms->obj['mysql']->getTotal($sql,'module')) {
      $array = mysql_fetch_array($cms->obj['mysql']->module);
      foreach ($array as $key => $value)
        if (!is_numeric($key)) $return[$key] = $value;
      return $return;
    }
  }

  /**
   * Pega os parâmetros do modulo
   * 
   * @var           string $moduleParams - parâmetros trazidos da BD
   * @var           array $params - parâmetros opcionais
   */
  function getParams($moduleParams = '',$params = array()) {
    if ($moduleParams) {
      $moduleParams = explode("\r\n",$moduleParams);
      foreach ($moduleParams as $v) {
        $moduleParam = explode("=",$v);
        if (isset($moduleParam[1])) $return[$moduleParam[0]] = $moduleParam[1];
      }
      return $return;
    }
    return array();
  }

  /**
   * Mostra o tpl
   * 
   * @var           string $tpl - tpl para ser mostrado
   * @var           string $format - formato ficheiro tpl ou string
   * @var           string $get - mostra ou retorna o template
   * @var           array $params - parâmetros opcionais
   */
  function show($tpl = null,$get = null,$format = null,$params = array()) {
    global $cms;

    if (is_null($format)) {
      if (is_file($this->tplP.$tpl)) $tpl = $this->tplP.$tpl;
      else  $tpl = $this->patch.'templates'.DS.$tpl;
    }

    if (!$this->needLogin or ($this->needLogin == 1 and $cms->obj['user']->logged())) return $cms->_show($tpl,$format,$get);
  }
}
?>